package per.jdz.demo.domain.entity;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import lombok.Data;
import per.jdz.demo.listener.LandUpsertListener;
import per.jdz.demo.utils.DateConverter;
import per.jdz.demo.utils.StringConverter;
import per.jdz.demo.utils.StringToDoubleConverter;

import java.io.Serializable;
import java.util.Date;

/**
 * @author Jdz
 * @date 2025/1/8
 */
@Table(value = "origin_land_data", onInsert = LandUpsertListener.class, onUpdate = LandUpsertListener.class)
@Data
public class OriginLandData implements Serializable {
    private static final long serialVersionUID = 1L;
    @ExcelIgnore
    @Id(keyType = KeyType.Auto)
    private Long id;
    @ExcelIgnore
    private String hashValue;
    // 地块名称：地块的官方名称或编号
    private String landName;

    // 土地属性：例如商业用地、住宅用地等
    private String landProperty;

    // 公告日期：土地出让公告发布的日期
    @ExcelProperty(converter = DateConverter.class)
    private Date announcementDate;

    // 出让底价(万元)：政府设定的土地出让起始价格
    private String basePrice;

    // 成交总价(万元)：最终竞得方支付的总金额
    private String totalSalePrice;

    // 成交楼板价(元/㎡)：每平方米成交价格
    private String floorPrice;

    // 竞得方：获得土地的单位或个人
    private String winningBidder;

    // 成交日期：土地交易完成的日期
    @ExcelProperty(converter = DateConverter.class)
    private Date transactionDate;

    // 公告号/宗地编号：土地出让公告的编号或宗地编号
    private String noticeNumberOrPlotCode;

    // 出让方式：如拍卖、招标、挂牌等
    private String saleMethod;

    // 规划总建面积(㎡)：规划中建筑物总面积
    private String planTotalConstructionArea;

    // 总占地面积(㎡)：土地总面积
    private String totalArea;

    // 容积率：地上总建筑面积与建设用地面积的比例
    private String plotRatio;

    // 容积率描述：对容积率的具体说明
    private String plotRatioDescription;

    // 交易状态：例如已成交、待成交等
    private String transactionStatus;

    // 土地地址：地块的地理位置
    private String landAddress;

    // 省份：地块所在的省份
    private String province;

    // 城市：地块所在的城市
    private String city;
}